/**
 * vue i18n 9+版本中，特殊字符需要特殊处理，特殊字符包括
 * {}@$|
 * 以上5种特殊字符在国际化文本中出现时，文本如下
 * '可包含大小写字母、数字、—、_、@、{、}、$、|、.等特殊字符。'
 * 以上文本需改为如下形式
 * "可包含大小写字母、数字、—、_、{'@'}、{'{'}、{'}'}、{'$'}、{'|'}、.等特殊字符。"
 */
export default {
  // 公共部分
  common: {
    title: '中后台管理系统',
    loadingText: '加载中...',
    loading: '加载中，请稍后...',
    signOut: '退出系统',
    backTop: '返回顶部',
    fullscreen: '全屏',
    exitFullscreen: '退出全屏',
    empty: '暂无数据',
    loadingFailed: '加载失败',
    noMore: '没有更多了',
    development: '正在加紧开发中，敬请期待...',
    index: '序号',
    id: '编号',
    name: '名称',
    status: '状态',
    sort: '排序',
    operate: '操作',
    remark: '备注',
    detail: '详情',
    createTime: '创建时间',
    updateTime: '更新时间',
    deleteTime: '删除时间',
    to: '至',
    startTime: '开始时间',
    endTime: '结束时间',
    startDate: '开始日期',
    endDate: '结束日期',
    inputText: '请输入',
    selectText: '请选择',
    required: '该项为必填项',
    maximize: '最大化',
    restoreDown: '还原',
    all: '全部',
    mark: {
      comma: '，',
      period: '。',
      semi: '；',
      exclamation: '！',
      question: '？',
      colon: '：'
    },
    data: {
      type: '数据类型',
      value: '数据值'
    },
    category: {
      name: '分类',
      parent: '父级分类'
    },
    tag: '标签',
    code: '编号',
    rules: {
      name: '请输入名称',
      status: '请选择状态',
      data: {
        value: '请输入数据值'
      },
      remark: '请输入备注',
      category: {
        parent: '请选择父级分类'
      },
      date: '请选择日期'
    },
    icon: {
      title: '图标',
      color: '多彩图标',
      copy: '点击复制',
      picker: '图标选择器',
      rules: {
        select: '请选择图标',
        name: '请输入图标名称',
        type: '请选择图标集'
      },
      type: {
        antDesign: 'Ant Design',
        bootstrap: 'Bootstrap',
        elementPlus: 'Element Plus',
        fontAwesome: 'Font Awesome',
        iconFont: 'IconFont',
        remix: 'Remix',
        bpmn: 'Bpmn',
        custom: '自定义'
      }
    }
  },
  check: {
    all: '全选',
    cancel: '全不选',
    half: '半选',
    already: '已选中：',
    none: '未选中'
  },
  validator: {
    lengthRange: '长度在{0}到{1}之间',
    notSpace: '不能包含空格',
    notSpecialCharacters: '不能包含特殊字符'
  },
  // 状态类
  status: {
    yes: '是',
    no: '否',
    enable: '启用',
    disabled: '禁用',
    unEnable: '停用',
    success: '成功',
    fail: '失败'
  },
  permit: {
    hasPermit: `请设置操作权限标签值`,
    hasRole: `请设置角色权限标签值`
  },
  // 通知、警告等弹窗公共标题
  message: {
    reminder: '温馨提示',
    error: '错误',
    warning: '警告',
    success: '成功',
    tips: '提示',
    confirmTitle: '系统提示',
    upload: '上传',
    preview: '预览',
    updateSuccess: '修改成功',
    createSuccess: '新增成功',
    copySuccess: '复制成功',
    copyFail: '复制失败',
    import: {
      title: '导入',
      data: '是否确认导入数据？',
      success: '导入成功'
    },
    export: {
      title: '导出',
      selected: '是否确认导出所选中数据？',
      data: '是否确认导出数据？',
      no: '请选择需要导出的数据',
      success: '导出成功'
    },
    del: {
      title: '删除',
      selected: '是否删除所选中数据？',
      data: '是否删除数据？',
      no: '请选择需要删除的数据',
      success: '删除成功'
    }
  },
  // 标签栏
  tag: {
    maximize: '最大化',
    restoreDown: '还原',
    refreshRoute: '刷新路由',
    reload: '重载当前标签页',
    closeCurrentTag: '关闭当前标签页',
    closeLeftTags: '关闭左侧标签页',
    closeRightTags: '关闭右侧标签页',
    closeOtherTags: '关闭其他标签页',
    closeAllTags: '关闭全部标签页',
    fixedCurrentTag: '固定当前标签页',
    cancelFixedTag: '取消固定标签页'
  },
  // 锁屏
  lockScreen: {
    lock: '锁屏',
    unlock: '解锁屏幕',
    backLogin: '返回登录',
    switchWallpaper: '切换壁纸',
    changePassword: '修改密码',
    oldPassword: '请输入原始密码',
    newPassword: '请输入新密码',
    password: '请输入锁屏密码',
    truePassword: '请输入正确的锁屏密码',
    diffPwd: '两次输入的密码不一致',
    setPassword: '请设置锁屏密码',
    confirmPassword: '确认密码'
  },
  // 错误
  error: {
    operationFailed: '操作失败',
    tip: '错误提示',
    errorMessage: '操作失败,系统异常!',
    timeoutMessage: '登录超时,请重新登录!',
    apiTimeoutMessage: '接口请求超时,请刷新页面重试!',
    apiRequestFailed: '请求出错，请稍候重试。错误码：{0}',
    networkException: '网络异常',
    networkExceptionMsg: '网络异常，请检查您的网络连接是否正常!',
    code302: '接口重定向了！',
    code400: '参数不正确！',
    code401: '用户没有权限（令牌、用户名、密码错误）!',
    code403: '用户得到授权，但是访问是被禁止的。!',
    code404: '网络请求错误,未找到该资源!',
    code405: '网络请求错误，请求方法未允许。',
    code408: '网络请求超时！',
    code409: '系统已存在相同数据！',
    code500: '服务器错误,请联系管理员!',
    code501: '网络未实现！',
    code502: '网络错误！',
    code503: '服务不可用，服务器暂时过载或维护!',
    code504: '服务暂时无法访问，请稍后再试！',
    code505: 'HTTP版本不支持该请求！',
    unknownMistake: '未知错误，请联系管理员！',
    timeout: '网络请求超时！',
    networkOnline: '网络异常！',
    networkOffline: '网络异常，请检查您的网络连接是否正常!',
    requestBreakOff: '请求被中断！',
    signInTimeOut: '登录超时，请重新登录！',
    unPermit: '您未被授权访问该页面，请联系管理员！',
    unSupportWebSocket: '浏览器不支持WebSocket！',
    noPermission: `抱歉，您无权访问此页面。`,
    pageError: '抱歉，您访问的页面不存在。',
    networkError: '抱歉，服务器报告错误。',
    returnToHome: '返回首页',
    back: '{0}秒后，返回首页',
    exception: {
      backLogin: '返回登录',
      backHome: '返回首页',
      subTitle403: '抱歉，您无权访问此页面。',
      subTitle404: '抱歉，您访问的页面不存在。',
      subTitle500: '抱歉，服务器报告错误。',
      noDataTitle: '当前页无数据',
      networkErrorTitle: '网络错误',
      networkErrorSubTitle: '抱歉，您的网络连接已断开，请检查您的网络！'
    }
  },
  // websocket
  websocket: {
    socketFail1: 'websocket连接绑定事件失败，开始重连。',
    socketFail2: 'websocket连接异常，开始重连。',
    socketFail3: 'websocket非正常关闭，正在尝试重连。',
    socketFail4: 'websocket未能正常连接，请刷新重试。',
    socketFail5: 'websocket连接失败，正在重新建立连接...',
    socketFail6: '没有收到后台的数据，重新连接。'
  },
  // 图表
  chart: {
    region: '地区',
    country: '国家',
    englishName: '英文名',
    count: '数量',
    percentage: '占比',
    high: '高',
    low: '低',
    islands: '南海诸岛'
  },
  // 上传
  upload: {
    file: '上传文件',
    startUpload: '开始上传',
    reUploadFailFile: '重新上传失败文件',
    selectFile: '选择文件',
    title: '文件',
    thumbnail: '缩略图',
    fileName: '文件名',
    fileSize: '文件大小',
    status: '状态',
    operate: '操作',
    acceptHtml: '<span class="el-text">支持上传<span>{0}</span>格式文件</span>',
    maxSizeHtml: '<span class="el-text">大小不超过<span>{0}</span></span>',
    tips: '<span class="el-text">支持上传<span>{0}</span>格式文件，大小不超过<span>{1}</span>。</span>',
    aspectRatio: '<span class="el-text">建议尺寸：{0} x {1} </span>',
    limit: '上传文件数量不能超过{0}个！',
    accept: '文件格式不正确, 请上传{0}格式的{1}文件！',
    size: '上传文件大小不能超过{0}！',
    rule: '请上传大小不超过<b>{0}MB</b>格式为<b>{1}</b>的文件',
    waiting: '正在上传文件，请稍候...',
    waitingUpload: '等待上传',
    uploading: '正在上传',
    success: '上传成功！',
    failed: '上传失败！',
    error: '导入数据失败，请您重新上传！',
    uploadWait: '请等待文件上传结束后操作',
    replace: '更换',
    image: '图片',
    video: '视频',
    audio: '音频',
    text: '文本',
    application: '文档应用',
    mimetype: {
      image: {
        rule: '请上传大小不超过<b>{0}MB</b>格式为<b>{1}</b>的图片',
        maxSizeMultiple: '上传图片大小不能超过{0}MB!',
        acceptError: '上传图片不符合所需的格式！',
        error: '图片上传失败，请您重新上传！'
      }
    }
  },
  // 导出
  export: {
    title: '导出数据',
    fileName: '文件名称',
    fileType: '文件类型',
    fileTypeXlsx: 'xlsx(*.xlsx)',
    fileTypeCsv: 'csv(*.csv)',
    fileTypeHtml: '网页(*.html)',
    fileTypeXml: 'xml数据(*.xml)',
    fileTypeTxt: '文本文件(*.txt)',
    dataScope: '选择数据',
    dataScopeCurrentPage: '当前页数据',
    dataScopeSelected: '选中的数据',
    dataScopeAll: '全量后台数据',
    headerType: '表头选择',
    headerTypeDefault: '默认',
    headerTypeCustom: '自定义',
    fields: '字段选择',
    allFields: '全部字段',
    emptyField: '自定义表头字段选择不能为空'
  },
  // 项目配置
  setting: {
    open: '打开项目配置',
    default: '恢复默认',
    clearCacheToLogin: '清空缓存并返回登录页',
    title: '项目配置',
    layout: {
      title: '布局主题',
      tips: '布局配置仅在电脑视窗下生效，手机视窗时将默认为纵向布局',
      type: {
        vertical: '纵向',
        horizontal: '横向',
        common: '常规',
        comprehensive: '综合',
        verticalComprehensive: '纵向综合',
        column: '分栏',
        verticalColumn: '纵向分栏'
      }
    },
    theme: {
      title: '主题',
      skin: '明暗主题',
      system: {
        title: '系统主题',
        dialog: {
          title: '系统主题颜色选择'
        }
      },
      header: {
        title: '顶栏主题',
        dialog: {
          title: '顶栏主题颜色选择'
        }
      },
      sidebar: {
        title: '侧边栏主题',
        dialog: {
          title: '侧边栏主题颜色选择'
        }
      },
      dark: {
        title: '暗系主题',
        dialog: {
          title: '暗系主题颜色选择'
        }
      },
      type: {
        blue: '湖蓝',
        green: '草绿',
        red: '蔷薇',
        pink: '牡丹',
        purple: '葡萄',
        cyan: '翡翠',
        orange: '朱砂',
        gold: '烫金',
        amber: '琥珀',
        glass: '琉璃'
      }
    },
    interface: {
      function: {
        title: '界面功能',
        fixedHeader: '固定顶栏',
        fixedSidebar: '固定侧边栏',
        sidebarAccordion: '侧边菜单手风琴模式',
        enforceShowColumn: {
          title: '强制显示分栏',
          tips: '根菜单无子级时，是否需要显示分栏模块'
        },
        columnInline: {
          title: '分栏内嵌',
          tips: '子级菜单分栏模块是否需要内嵌在文档流内，占用文档流宽度'
        },
        tagCache: '标签栏缓存',
        keepAlive: '页面状态缓存',
        autoLockScreenTime: {
          title: '自动锁屏',
          tips: '值为0时，自动锁屏功能关闭。时间单位：分钟'
        },
        autoSignOutTime: {
          title: '自动登出',
          tips: '值为0时，自动退出登录功能关闭。时间单位：分钟'
        }
      },
      display: {
        title: '界面显示',
        breadcrumbEnable: '启用面包屑',
        lockScreenEnable: '启用锁屏',
        messageEnable: '启用消息组件',
        fullscreenEnable: '启用全屏功能',
        globalizationEnable: '启用国际化功能',
        sizeEnable: '启用组件尺寸功能',
        tagEnable: '启用标签栏',
        tagContextMenuEnable: '启用标签栏右键菜单',
        tagRefreshEnable: '启用标签页刷新',
        tagOperateEnable: '启用标签栏操作',
        fullContentEnable: '启用全屏内容功能',
        collapseButtonPosition: {
          sidebar: {
            title: '侧边栏折叠按钮',
            tips: '侧边栏折叠按钮显示位置'
          },
          column: {
            title: '分栏折叠按钮',
            tips: '分栏折叠按钮显示位置'
          },
          type: {
            hidden: '不显示',
            header: '顶栏',
            tag: '标签栏',
            float: '浮动',
            bottom: '底部'
          }
        },
        headerMenuAlign: {
          title: '顶栏菜单布局',
          type: {
            left: '居左',
            center: '居中',
            right: '居右'
          }
        },
        headerMenuStyle: {
          title: '顶栏菜单风格',
          type: {
            default: '默认',
            card: '卡片',
            smart: '灵动'
          }
        },
        columnStyle: {
          title: '分栏风格',
          type: {
            horizontal: '横向',
            vertical: '纵向',
            card: '卡片',
            arrow: '箭头'
          }
        },
        tagStyle: {
          title: '标签风格',
          type: {
            default: '默认',
            card: '卡片',
            smart: '灵动',
            smooth: '圆滑'
          }
        },
        moduleSpace: '模块间距',
        footerEnable: '页脚',
        greyPatternEnable: '灰色模式',
        colorWeaknessPatternEnable: '色弱模式'
      }
    },
    animationTitle: '动画',
    progressEnable: '顶部进度条',
    loadingEnable: '启用Loading',
    loading: {
      title: 'Loading 场景',
      type: {
        none: '禁用',
        body: '页面区',
        content: '内容区',
        module: '模块区'
      }
    },
    cutscene: {
      title: '过场动画',
      type: {
        title: '过场动画类型',
        default: '默认',
        fade: '淡入淡出',
        fadeLeft: '左侧淡入淡出',
        fadeRight: '右侧淡入淡出',
        fadeTop: '顶部淡入淡出',
        fadeBottom: '底部淡入淡出',
        zoomIn: '放大淡入淡出',
        zoomOut: '缩小淡入淡出',
        zoom: '缩放淡入淡出'
      }
    }
  },
  // 颜色操作
  color: {
    mixin: {
      title: '混合类型',
      type: {
        default: '原色',
        light: '明度',
        dark: '暗度'
      },
      opacity: {
        light: '明度',
        dark: '暗度'
      }
    },
    type: {
      default: '默认',
      primary: '主要',
      success: '成功',
      info: '信息',
      warning: '警告',
      danger: '危险'
    }
  },
  // 尺寸
  size: {
    large: '大',
    default: '默认',
    small: '小'
  },
  // 日期
  date: {
    prevYear: '上一年',
    prevMonth: '上一月',
    nextYear: '下一年',
    nextMonth: '下一月',
    backToday: '返回今天',
    monthDate: '月历',
    weekDate: '周历',
    prevWeek: '上一周',
    nextWeek: '下一周',
    year: '年',
    month: '月',
    day: '日',
    week: '星期',
    weekDay: '周',
    hour: '时',
    hours: '小时',
    minute: '分',
    minutes: '分钟',
    second: '秒',
    numMonth: '个月',
    numDay: '天',
    vacation: '休',
    work: '班',
    beforeDawn: '凌晨好',
    morning: '早上好',
    am: '上午好',
    noon: '中午好',
    afternoon: '下午好',
    evening: '晚上好',
    sunset: '傍晚好',
    night: '夜里好',
    monday: '周一',
    tuesday: '周二',
    wednesday: '周三',
    thursday: '周四',
    friday: '周五',
    saturday: '周六',
    sunday: '周日',
    mon: '一',
    tue: '二',
    wed: '三',
    thu: '四',
    fri: '五',
    sat: '六',
    sun: '日',
    today: '今天',
    yesterday: '昨天',
    tomorrow: '明天',
    lastDay2: '前天',
    lastYear: '去年',
    thisYear: '今年',
    pastYear: '近一年',
    lastDay7: '最近 7 天',
    lastDay30: '最近 30 天',
    thisMonth: '本月',
    before: '{0}{1}前',
    beforeYear: '{0}年前',
    beforeMonth: '{0}个月前',
    beforeWeek: '{0}星期前',
    beforeDay: '{0}天前',
    beforeHour: '{0}小时前',
    beforeMinute: '{0}分钟前',
    beforeSecond: '{0}秒前',
    just: '刚刚',
    countDownYYYYss: '{0} 年 {1} 个月 {2} 天 {3} 小时 {4} 分钟 {5} 秒',
    countDownYYYYmm: '{0} 年 {1} 个月 {2} 天 {3} 小时 {4} 分钟',
    countDownYYYYDD: '{0} 年 {1} 个月 {2} 天',
    countDownMMss: '{0} 个月 {1} 天 {2} 小时 {3} 分钟 {4} 秒',
    countDownMMmm: '{0} 个月 {1} 天 {2} 小时 {3} 分钟',
    countDownMMDD: '{0} 个月 {1} 天 ',
    countDownDDss: '{0} 天 {1} 小时 {2} 分钟 {3} 秒',
    countDownDDmm: '{0} 天 {1} 小时 {2} 分钟',
    countDownhhss: '{0} 小时 {1} 分钟 {2} 秒',
    countDownhhmm: '{0} 小时 {1} 分钟',
    countDownmmss: '{0} 分钟 {1} 秒',
    countDownmm: '{0} 分钟',
    countDownss: '{0} 秒'
  },
  // cron 规则生成器
  cron: {
    title: 'CRON 规则生成器',
    error: 'CRON 表达式错误，已转换为默认表达式',
    input: {
      placeholder: '请选择常用表达式',
      button: '生成器',
      type: {
        minute: '每分钟',
        hour: '每小时',
        dayFirst: '每天零点',
        monthFirst: '每月一号零点',
        monthLast: '每月最后一天零点',
        weekLast: '每周星期日零点',
        custom: '自定义'
      }
    },
    // 类型
    type: {
      title: '类型',
      type: {
        ignore: '忽略',
        any: '任意值',
        range: '范围',
        step: '间隔',
        appoint: '指定',
        enum: '枚举',
        period: '周期',
        weekLast: '每月最后一个',
        monthLastDay: '最后一天',
        monthLastWeek: '最后一个工作日',
        unAppoint: '不指定',
        last: '最后',
        near: '临近'
      }
    },
    // 说明文本
    text: {
      second: {
        range: {
          start: '每分钟第',
          middle: '秒内，每间隔',
          end: '秒执行一次'
        },
        step: {
          start: '每分钟第',
          middle: '秒开始，每间隔',
          end: '秒执行一次'
        }
      },
      minute: {
        range: {
          start: '每小时第',
          middle: '分钟内，每间隔',
          end: '分钟执行一次'
        },
        step: {
          start: '每小时第',
          middle: '分钟开始，每间隔',
          end: '分钟执行一次'
        }
      },
      hour: {
        range: {
          start: '每天',
          middle: '点期间，每间隔',
          end: '小时执行一次'
        },
        step: {
          start: '每天',
          middle: '点开始，每间隔',
          end: '小时执行一次'
        }
      },
      day: {
        range: {
          start: '每月',
          middle: '号期间，每间隔',
          end: '天执行一次'
        },
        step: {
          start: '每月',
          middle: '号开始，每间隔',
          end: '天执行一次'
        },
        last: {
          start: '每月',
          end: '执行一次'
        },
        near: {
          start: '每月距',
          end: '号最近的工作日执行一次'
        }
      },
      month: {
        range: {
          start: '每年',
          middle: '月期间，每间隔',
          end: '月执行一次'
        },
        step: {
          start: '每年',
          middle: '月开始，每间隔',
          end: '月执行一次'
        }
      },
      week: {
        range: {
          start: '每周',
          middle: '期间，每间隔',
          end: '天执行一次'
        },
        step: {
          start: '每周',
          middle: '开始，每间隔',
          end: '天执行一次'
        },
        last: {
          start: '每月最后一个',
          end: '执行一次'
        },
        period: {
          start: '每月第',
          middle: '周的',
          end: '执行一次'
        }
      },
      year: {
        range: {
          middle: '年期间，每间隔',
          end: '年执行一次'
        },
        step: {
          middle: '年开始，每间隔',
          end: '年执行一次'
        }
      }
    }
  },
  // 验证
  captcha: {
    verification: '请完成安全验证',
    slide: '向右拖动滑块填充拼图',
    point: '请依次点击',
    success: '验证成功',
    fail: '验证失败，请重试',
    tip: '点次进行验证'
  },
  // 路由菜单
  router: {
    'login': '登录',
    'socialLogin': '社交登录',
    'ssoLogin': '单点登录',
    'noPermit': '无权限',
    'noFound': '未找到页面',
    'serverError': '服务器错误',
    'networkError': '网络错误',
    'development': '研发中',
    'upgradeRepair': '升级维护'
  },
  // 表单
  form: {
    input: '输入框',
    inputNumber: '数字输入框',
    default: '默认',
    icon: '图标',
    mixed: '复合型',
    textarea: '多行文本',
    slot: '插槽',
    position: '位置',
    autocomplete: '自动补全',
    select: '选择器',
    selectGroup: '选项分组',
    selectV2: '虚拟列表选择器',
    cascader: '级联选择器',
    switch: '开关',
    rate: '评分',
    colorPicker: '颜色选择器',
    transfer: '穿梭框',
    render: '渲染器',
    radio: '单选框',
    button: '按钮',
    checkbox: '多选框',
    slider: '滑块',
    datePicker: '日期选择器',
    shortcuts: '快捷选项',
    today: '今天',
    yesterday: '昨天',
    aWeekAgo: '一周前',
    week: '周',
    year: '年',
    month: '月',
    dates: '日期',
    daterange: '日期范围',
    monthrange: '月份范围',
    dateTimePicker: '日期时间选择器',
    dateTimerange: '日期时间范围',
    timePicker: '时间选择器',
    timeSelect: '时间选择',
    inputPassword: '密码输入框',
    passwordStrength: '密码强度',
    operate: '操作',
    change: '更改',
    restore: '还原',
    disabled: '禁用',
    disablement: '解除禁用',
    delete: '删除',
    add: '添加',
    setValue: '设置值',
    resetValue: '重置值',
    set: '设置',
    subitem: '子项',
    formValidation: '表单验证',
    verifyReset: '验证重置',
    remark: '备注',
    inputText: '请输入',
    selectText: '请选择'
  },
  // 表格
  table: {
    table: '表格',
    index: '序号',
    title: '标题',
    author: '作者',
    createTime: '创建时间',
    action: '操作',
    pagination: '分页',
    reserveIndex: '叠加序号',
    restoreIndex: '还原序号',
    showSelections: '显示多选',
    hiddenSelections: '隐藏多选',
    showExpandedRows: '显示展开行',
    hiddenExpandedRows: '隐藏展开行',
    header: '头部'
  },
  // 动作
  action: {
    create: '新增',
    add: '添加',
    delete: '删除',
    remove: '移除',
    edit: '编辑',
    update: '更新',
    search: '搜索',
    query: '查询',
    reset: '重置',
    preview: '预览',
    view: '查看',
    detail: '详情',
    more: '更多',
    sync: '同步',
    save: '保存',
    allRight: '好的',
    confirm: '确认',
    cancel: '取消',
    generate: '生成',
    print: '打印',
    review: '审核',
    import: '导入',
    export: '导出',
    fold: '折叠',
    unfold: '展开',
    shrink: '收起',
    expand: '展开',
    open: '打开',
    close: '关闭',
    upload: '上传',
    download: '下载',
    lock: '锁定',
    unlock: '解锁',
    enable: '启用',
    disable: '禁用',
    activation: '激活',
    freeze: '冻结',
    agree: '同意',
    overrule: '驳回',
    yes: '是',
    no: '否',
    previous: '上一步',
    back: '返回',
    next: '下一步',
    skip: '跳过',
    done: '完成',
    start: '开始',
    end: '结束',
    copy: '复制',
    on: '开启',
    off: '关闭',
    play: '开启',
    pause: '暂停',
    test: '测试',
    rename: '重命名',
    move: '移动到',
    return: '还原'
  },
  // 裁剪
  cropper: {
    title: '裁剪',
    selectImage: '选择图片',
    uploadImage: '上传图片',
    confirmAndUpload: '确认并上传',
    rotateLeft: '向左旋转',
    rotateRight: '向右旋转',
    horizontalFlip: '水平翻转',
    verticalFlip: '垂直翻转',
    zoomIn: '放大',
    zoomOut: '缩小',
    uploadSuccess: '上传成功',
    modalTitle: '头像上传',
    preview: '预览',
    sizeError: '图片需裁剪为建议尺寸后才能上传'
  },
  // 登录
  sign: {
    template: '登录模板',
    welcome: '欢迎登录',
    reSign: '重新登录',
    remember: '记住我',
    backLogin: '返回登录',
    scanQrCode: '扫描二维码登录',
    hasUser: '已有账号？去登录',
    noUser: '还没有账号？去注册',
    noSocial: '未配置该社交账号登录方式',
    fields: {
      tenant: {
        label: '租户名称',
        placeholder: '请输入租户名称',
        rules: {
          label: '请输入租户名称'
        }
      },
      username: {
        label: '用户名',
        placeholder: '请输入用户名',
        rules: {
          label: '请输入用户名'
        }
      },
      password: {
        label: '密码',
        key: '密码：',
        placeholder: '请输入密码',
        placeholderTwice: '请再次输入密码',
        forget: '忘记密码？',
        twice: '确认密码',
        new: '新密码',
        rule: "密码为6-20位，可包含大小写字母、数字、{'@'}、—、_、.等字符。",
        rules: {
          empty: '请输入密码',
          error: '密码格式错误',
          wrong: '请输入正确的密码',
          twice: '请再次输入密码',
          different: '两次密码输入不一致'
        }
      },
      account: {
        label: '账号',
        key: '账号：',
        placeholder: '请输入账号',
        empty: '还没有账号？',
        rule: "账号为3-16位，可包含大小写字母、数字、—、_、{'@'}、.等字符。",
        rules: {
          empty: '请输入账号',
          error: '账号格式错误',
          wrong: '账号不存在'
        },
        tips: '请妥善保管好个人账号，切勿借与他人，并定期修改密码。'
      },
      email: {
        label: '邮箱',
        key: '邮箱：',
        placeholder: '请输入邮箱',
        rules: {
          empty: '请输入邮箱',
          error: '邮箱格式错误',
          wrong: '邮箱不存在'
        }
      },
      mobile: {
        label: '手机号',
        key: '手机号：',
        placeholder: '请输入手机号',
        rules: {
          empty: '请输入手机号',
          error: '手机号格式错误',
          wrong: '手机号不存在'
        }
      },
      code: {
        label: '验证码',
        key: '验证码：',
        placeholder: '请输入验证码',
        button: '获取验证码',
        restart: '{0}秒后重试',
        send: '验证码已发送',
        rules: {
          empty: '请输入验证码',
          wrong: '验证码错误！'
        }
      },
      invitationCode: {
        label: '邀请码',
        placeholder: '请输入邀请码',
        rules: {
          empty: '请输入邀请码',
          wrong: '邀请码错误！'
        }
      }
    },
    in: {
      title: '登录',
      button: '登录',
      action: '登录',
      success: '登录成功！',
      mode: {
        mobile: '手机登录',
        qrCode: '二维码登录',
        sso: '三方授权',
        other: '其他登录方式'
      }
    },
    out: {
      action: '退出登录'
    },
    reset: {
      title: '重置密码',
      button: '重置密码',
      action: '重置密码',
      success: '重置密码成功！'
    },
    register: {
      title: '注册',
      button: '注册',
      action: '注册',
      click: '点击注册',
      success: '注册成功！'
    },
    recover: {
      title: '找回',
      button: '找回',
      password: '找回密码',
      action: '确认找回',
      success: {
        account: '账号已成功找回'
      }
    },
    illustrations: {
      title: '插画',
      star: {
        name: '星空剪影',
        title: '仰望星空',
        type: {
          monday: '禅心如水，波澜不惊，万物映其中，自显清明。',
          tuesday: '行走坐卧，皆是修行，心无挂碍，方显真我。',
          wednesday: '身在红尘，心向净土，一念之转，天地皆宽。',
          thursday: '青山不语，绿水无言，禅意悠悠，自在心间。',
          friday: '世事纷扰，如露如电，保持初心，方得始终。',
          saturday: '山静水深，云淡风轻，心境澄明，自在无忧。',
          sunday: '世事如梦，浮沉皆空，一念放下，万般自在。',
          early: '一花一世界，一叶一菩提，心若止水，万物皆明。',
          overTime: '山河大地皆法身，日出日落是禅机，平常心是道。',
          offDuty: '世事如浮云，心静则明，水清则月现。'
        }
      },
      lake: {
        name: '西湖十景',
        title: '西湖十景',
        type: {
          monday: '苏堤春晓',
          tuesday: '曲院风荷',
          wednesday: '平湖秋月',
          thursday: '断桥残雪',
          friday: '花港观鱼',
          saturday: '柳浪闻莺',
          sunday: '三潭映月',
          early: '双峰插云',
          overTime: '雷峰夕照',
          offDuty: '南屏晚钟'
        }
      },
      work: {
        name: '工作场景',
        title: '欢迎使用本系统',
        type: {
          monday: '新的一周开始啦，昨天休息的好吗？',
          tuesday: '我爱工作，工作使我优秀！哕~',
          wednesday: '你的努力我看得见，但不是所有人都看得见哟！',
          thursday: '你正在变得更加优秀！噢，是的，我坚信。',
          friday: '一周的时光很快就要过去了，明天休息吗？',
          saturday: '噢~，可怜的孩子，你还在工作！给自己点杯奶茶吧~',
          sunday: '我并不想在今天见到你，原因你懂的~',
          early: '这么早就见到你，我很开心，你呢？',
          overTime: '我想你一定累坏了，我希望你能早点下班的。',
          offDuty: '快要下班啦~，有没有很开心，很兴奋？'
        }
      },
      unit: {
        name: '业务场景',
        title: '欢迎使用本系统',
        type: {
          monday: '前端基于vue3 + element-plus界面',
          tuesday: '内置功能权限、数据权限、多租户、工作流等',
          wednesday: '登录支持三方登录，操作日志展示',
          thursday: '包含支付退款、短信、商城装修等功能',
          friday: 'ERP、CRM、OA、微信公众号拿来即用',
          saturday: '组件化开发，封装各种常用组件',
          sunday: '纯前端框架，基于mock开发，接口完善，可自行修改对接后端',
          early: '框架布局多样，主题丰富，可自由切换，满足各种场景需求',
          overTime: '配套uni-app商城项目，与本系统商城装修相辅相成',
          offDuty: '本系统是集市面上大成者之优点，及个人思想之产物'
        }
      }
    },
    sso: {
      title: '此第三方应用请求获得以下权限：',
      action: {
        agree: '同意授权',
        refuse: '拒绝'
      },
      loading: '授 权 中...'
    }
  },
  // 个人中心
  profile: {
    title: '个人中心',
    user: {
      title: '个人信息',
      tag: '个人标签',
      about: '个人简介',
      username: '用户名称',
      nickname: '用户昵称',
      mobile: '手机号码',
      mail: '用户邮箱',
      dept: '所属部门',
      posts: '所属岗位',
      roles: '所属角色',
      birthday: '生日',
      sex: '性别',
      man: '男',
      woman: '女',
      createTime: '创建日期'
    },
    social: {
      title: '社交登录',
      bind: '已绑定',
      unbind: '未绑定',
      bindSuccess: '绑定成功！',
      unbindSuccess: '解绑成功！',
      action: {
        bind: '绑定',
        unbind: '解绑'
      }
    },
    info: {
      title: '基本信息',
      basicInfo: '基本资料',
      resetPwd: '修改密码',
      userSocial: '社交信息'
    },
    rules: {
      username: '请输入用户名称',
      nickname: '请输入用户昵称',
      mail: '请输入邮箱地址',
      trueMail: '请输入正确的邮箱地址',
      mobile: '请输入正确的手机号码',
      trueMobile: '请输入正确的手机号码',
      about: '请输入个人简介'
    },
    password: {
      capsLock: '大写锁定已开启',
      oldPassword: '旧密码',
      newPassword: '新密码',
      confirmPassword: '确认密码',
      oldPwdMsg: '请输入旧密码',
      newPwdMsg: '请输入新密码',
      cfPwdMsg: '请输入确认密码',
      rule: "密码为6-20位，可包含大小写字母、数字、{'@'}、—、_、.等字符。",
      errorRule: '密码格式错误',
      diffPwd: '两次输入密码不一致',
      success: '密码修改完成！',
      reSign: '您修改了自己的登录密码，请重新登录'
    }
  },
  // 基础模块
  infra: {
    // api 日志
    apiLog: {
      id: '日志编号',
      traceId: '链路追踪',
      userId: '用户编号',
      userType: '用户类型',
      userInfo: '用户信息',
      userIp: '用户 IP',
      userAgent: '用户 UA',
      applicationName: '应用名',
      requestInfo: '请求信息',
      requestMethod: '请求方法',
      requestParams: '请求参数',
      requestUrl: '请求地址',
      requestResult: '请求结果',
      operateModule: '操作模块',
      operateType: '操作类型',
      rules: {
        userId: '请输入用户编号',
        userType: '请选择用户类型',
        applicationName: '请输入应用名'
      },
      // 访问日志
      access: {
        title: 'API 访问日志',
        beginTime: '请求时间',
        endTime: '响应时间',
        duration: '执行时长',
        result: '操作结果',
        resultCode: '结果码',
        resultMsg: '反馈信息',
        rules: {
          duration: '请输入执行时长',
          resultCode: '请输入结果码'
        }
      },
      // 错误日志
      error: {
        title: 'API 异常日志',
        exceptionTime: '异常发生时间',
        exceptionStackTrace: '异常堆栈',
        exceptionName: '异常名',
        exceptionMessage: '异常信息',
        exceptionRootCauseMessage: '异常根本原因',
        exceptionClassName: '异常类名',
        exceptionFileName: '异常文件名',
        exceptionMethodName: '异常方法名',
        exceptionLineNumber: '异常行号',
        processStatus: '处理状态',
        processUser: '处理人',
        processTime: '处理时间',
        resultCode: '结果码',
        rules: {
          processStatus: '请选择处理状态',
          resultCode: '请输入结果码',
          confirmHandle: '确认标记为{0}？'
        },
        action: {
          handle: '已处理',
          ignore: '已忽略'
        }
      }
    },
    // 配置中心-参数配置
    config: {
      title: '参数配置',
      name: '参数名称',
      key: '参数键名',
      type: '参数类型',
      dateType: '日期类型',
      isTiemrange: '时间范围',
      value: '参数键值',
      category: '参数分类',
      rules: {
        name: '请输入参数名称',
        key: '请输入参数键名',
        type: '请选择参数类型',
        date: '请选择日期',
        time: '请选择时间',
        dateType: '请选择日期类型',
        value: '请输入参数键值',
        category: '请输入参数分类'
      }
    },
    // 数据源配置
    dataSourceConfig: {
      title: '数据源配置',
      name: '数据源名称',
      url: '数据源链接',
      username: '用户名',
      password: '密码',
      rules: {
        name: '请输入数据源名称',
        url: '请输入数据源链接',
        username: '请输入用户名',
        password: '请输入密码'
      }
    },
    // 定时任务
    cronJob: {
      title: '定时任务',
      name: '任务名称',
      status: '任务状态',
      handlerName: '处理器名称',
      handlerParam: '处理器参数',
      cronExpression: 'CRON 表达式',
      retryCount: '重试次数',
      retryInterval: '重试间隔',
      monitorTimeout: '监控超时时间',
      nextTimes: '后续执行时间',
      times: '第 {0} 次',
      ms: '{0} 毫秒',
      unOn: '未开启',
      rules: {
        name: '请输入任务名称',
        status: '请选择任务状态',
        handlerName: '请输入处理器名称',
        handlerParam: '请输入处理器参数',
        cronExpression: '请设置CRON 表达式',
        retryCount: '请输入重试次数',
        retryInterval: '请输入重试间隔',
        monitorTimeout: '请输入监控超时时间'
      },
      placeholder: {
        retryCount: '请输入重试次数。设置为 0 时，不进行重试',
        retryInterval: '请输入重试间隔，单位：毫秒。设置为 0 时，无需间隔',
        monitorTimeout: '请输入监控超时时间，单位：毫秒'
      },
      message: {
        updateStatus: {
          confirm: '确认要{0}定时任务编号为"{1}"的数据项？',
          success: '{0}成功'
        },
        run: {
          confirm: '确认要立即执行一次{0}？',
          success: '执行成功'
        }
      },
      action: {
        run: '执行一次',
        detail: '任务详情'
      },
      log: {
        title: '调度日志',
        jobId: '任务编号',
        executeIndex: '第几次执行',
        beginTime: '开始时间',
        endTime: '结束时间',
        duration: '执行时长',
        dateTime: '执行时间',
        result: '执行结果'
      }
    },
    // 资源中心
    resource: {
      // 资源配置
      config: {
        title: '资源配置',
        name: '配置名',
        storage: '存储器',
        master: '主配置',
        basePath: '基础路径',
        host: '主机地址',
        port: '主机端口',
        username: '用户名',
        password: '密码',
        mode: '连接模式',
        active: '主动模式',
        passive: '被动模式',
        endpoint: '节点地址',
        bucket: '存储 bucket',
        accessKey: 'accessKey',
        accessSecret: 'accessSecret',
        domain: '自定义域名',
        imageExts: '图片文件类型',
        videoExts: '视频文件类型',
        audioExts: '音频文件类型',
        textExts: '文本文件类型',
        applicationExts: '文档应用类型',
        imageSize: '图片文件大小',
        videoSize: '视频文件大小',
        audioSize: '音频文件大小',
        textSize: '文本文件大小',
        applicationSize: '文档应用大小',
        success: '测试通过',
        all: '全部',
        size: '不限制大小',
        rules: {
          name: '请输入配置名',
          storage: '请选择存储器',
          basePath: '请输入基础路径',
          host: '请输入主机地址',
          port: '请输入主机端口',
          username: '请输入用户名',
          password: '请输入密码',
          mode: '请选择连接模式',
          endpoint: '请输入节点地址',
          bucket: '请输入存储 bucket',
          accessKey: '请输入 accessKey',
          accessSecret: '请输入 accessSecret',
          domain: '请输入自定义域名',
          imageExts: '请输入允许图片文件类型',
          videoExts: '请输入允许视频文件类型',
          audioExts: '请输入允许音频文件类型',
          textExts: '请输入允许文本文件类型',
          applicationExts: '请输入允许文档应用文件类型',
          imageSize: '请输入图片文件大小限制',
          videoSize: '请输入视频文件大小限制',
          audioSize: '请输入音频文件大小限制',
          textSize: '请输入文本文件大小限制',
          applicationSize: '请输入文档应用文件大小限制',
          master: '是否确认修改配置编号为"{0}"的数据项为主配置？'
        },
        placeholder: {
          size: '设置为 0 时，不限制大小'
        }
      },
      // 资源库
      library: {
        title: '资源库',
        check: '资源选择器',
        quoteUpdateSuccess: '资源引用状态已更新',
        upload: '资源上传',
        rules: {
          name: '资源名称不能为空'
        },
        folder: {
          add: '新建文件夹',
          name: '文件夹名称',
          parentId: '上级文件夹',
          rules: {
            name: '请输入文件夹名称',
            parentId: '请选择上级文件夹',
            sort: '请输入排序数值'
          },
          placeholder: {
            name: '请输入文件夹名称，长度不超过20个字'
          }
        },
        file: {
          upload: '上传',
          to: '类型资源到',
          drag: '将资源拖放到此处上传，或点击上传',
          multiply: '支持选择多个资源上传',
          name: '资源名称',
          folderId: '文件夹',
          url: '文件',
          description: '描述',
          filesize: '大小',
          size: '尺寸',
          create_time: '上传时间',
          ext: '资源扩展名',
          sortType: '排序类型',
          quote: '更新引用',
          isQuote: '引',
          used: '已引用',
          unused: '未引用',
          isUsed: '是否引用',
          copyLink: '复制链接',
          copyCode: '复制代码',
          close: '上传完成自动关闭窗口',
          more: '添加更多资源',
          edit: {
            image: {
              title: '图片编辑',
              size: '图片尺寸：',
              name: '图片名称：',
              alt: '图片 alt：',
              description: '图片描述：',
              width: '宽度：',
              height: '高度：',
              keepAspectRatio: '保持宽高比',
              rules: {
                name: '请输入图片名称'
              }
            },
            media: {
              title: '视频编辑',
              size: '视频尺寸：',
              name: '视频名称：',
              description: '视频描述：',
              coverImage: '视频封面：',
              update: '更换封面',
              tips: '建议上传与视频相同尺寸的图片',
              rules: {
                name: '请输入视频名称'
              }
            },
            application: {
              title: '资源编辑',
              name: '资源名称：',
              description: '资源描述：',
              rules: {
                name: '请输入资源名称'
              }
            }
          },
          empty: {
            description: '这里空空如也，快来上传吧~',
            default: '回收站为您保存7天内删除的文件，超时后系统将自动删除'
          },
          rules: {
            name: '请输入资源名称',
            folderId: '请选择文件夹',
            mimetype: '请选择资源类型',
            sortType: '请选择排序类型'
          }
        },
        recycle: {
          title: '回收站',
          empty: {
            description: '您的回收站为空',
            default: '回收站为您保存7天内删除的文件，超时后系统将自动删除'
          },
          message: {
            return: {
              title: '还原',
              selected: '是否还原所选中数据？',
              data: '是否还原数据？',
              no: '请选择需要还原的数据',
              success: '还原成功'
            }
          }
        }
      }
    }
  },
  // 系统模块
  sys: {
    // 字典
    dict: {
      title: '字典',
      manage: '字典管理',
      name: '字典名称',
      type: '字典类型',
      label: '字典标签',
      value: '字典键值',
      list: '字典列表',
      setting: '字典配置',
      colorType: '颜色类型',
      cssClass: '样式类名',
      data: '数据',
      rules: {
        name: '请输入字典名称',
        type: '请输入字典类型',
        label: '请输入字典标签',
        value: '请输入字典键值',
        status: '请选择字典状态',
        dataStatus: '请选择数据状态',
        cssClass: '请输入样式类名',
        title: '请选择字典',
        colorType: '请选择标签颜色'
      }
    },
    // 菜单
    menu: {
      title: '菜单',
      all: '主类目',
      manage: '菜单管理',
      name: '菜单名称',
      type: '菜单类型',
      component: '组件路径',
      routeName: '路由名称',
      permission: '权限标识',
      badge: '徽章',
      dot: '是否醒标',
      visible: '是否显示',
      keepAlive: '是否缓存',
      fixed: '是否固定',
      transitionName: '过场动画',
      path: '路由地址',
      parent: '上级菜单',
      expand: '展开/折叠',
      button: {
        title: '菜单按钮'
      },
      rules: {
        name: '请输入菜单名称',
        component: '例：/System/Menu',
        emptyComponent: '请输入组件路径',
        routeName: '例：SystemMenu',
        emptyRouteName: '请输入路由名称',
        permission: '请输入权限标识',
        status: '请选择菜单状态',
        badge: '请输入徽章',
        parent: '请选择上级菜单',
        path: '请输入路由地址',
        transitionName: '请选择过场动画'
      },
      tips: {
        permission: '后端用于判断权限的字符',
        visible: '控制路由是否在侧边栏显示，显示与否，路由都可正常访问',
        path: '访问的路由地址，如：/System/Menu。如需设置外网地址，则以`http(s)://`开头',
        routeName: '驼峰命名，用于匹配页面及做页面缓存使用',
        keepAlive: '控制页面数据操作在切换页面后是否缓存',
        dot: '醒标后，侧边栏当前菜单右侧区域会标注一个醒目的小红点',
        fixed: '固定后，该菜单会默认显示在标签栏，且不可被关闭',
        badge: '可设置一个短标签，在侧边栏当前菜单的右侧显示。例：New、Hot等',
        transitionName: '跳转至该页面时的动画效果'
      }
    },
    // 角色
    role: {
      title: '角色',
      name: '角色名称',
      code: '角色标识',
      manage: '角色管理',
      current: '当前角色',
      confirmRoleStatus: '确认要"{0}""{1}"角色吗',
      menuName: '菜单名称',
      permitName: '权限名称',
      menu: '菜单权限',
      data: '数据权限',
      scope: '权限范围',
      user: '分配用户',
      select: '全选/全不选：',
      fold: '全部展开/折叠：',
      linkage: '父子联动（选中父节点，自动选择子节点）：',
      all: '顶级角色',
      parentId: '上级角色',
      dataScopeDepartIds: '数据权限',
      rules: {
        parentId: '请选择上级角色',
        dataScopeDepartIds: '请选择部门数据权限',
        name: '请输入角色名称',
        code: '请输入角色标识',
        status: '请选择角色状态'
      }
    },
    // 权限
    permit: {
      title: '权限',
      name: '权限名称',
      manage: '权限管理',
      view: '查看',
      edit: '编辑',
      canView: '可查看',
      canEdit: '可编辑',
      canDelete: '可删除',
      menu: '菜单权限',
      data: '数据权限',
      field: '字段权限',
      fieldName: '字段名称',
      fieldCode: '字段标识',
      module: '模块权限'
    },
    // 部门
    depart: {
      title: '部门',
      manage: '部门管理',
      name: '部门名称',
      all: '顶级部门',
      parentId: '上级部门',
      leader: '负责人',
      mobile: '手机号码',
      email: '邮箱地址',
      rules: {
        name: '请输入部门名称',
        parentId: '请选择上级部门',
        leader: '请选择负责人',
        status: '请选择部门状态',
        mobile: '请输入手机号码',
        email: '请输入邮箱地址',
        errMobile: '请输入正确的手机号码',
        errEmail: '请输入正确的邮箱地址'
      }
    },
    // 用户
    user: {
      title: '用户',
      manage: '用户管理',
      name: '用户姓名',
      assignRole: '分配角色',
      resetPassword: '重置密码',
      confirmResetPwd: '确定重置密码吗？',
      resetSuccess: '密码重置成功！',
      username: '用户名称',
      nickname: '用户昵称',
      realName: '真实姓名',
      account: '账号',
      password: '用户密码',
      mobile: '手机号码',
      email: '邮箱',
      depart: '归属部门',
      sex: '用户性别',
      post: '岗位',
      role: '角色',
      confirmUserStatus: '确认要"{0}""{1}"用户吗',
      newPwd: '请输入"{0}"的新密码',
      success: '修改成功，新密码是：{0}',
      successCopy: '修改成功，新密码"{0}"已复制到剪切板',
      import: '用户导入模板',
      importTitle: '用户导入',
      guide: '将文件拖到此处，或',
      upload: '点击上传',
      tips: '是否更新已经存在的用户数据',
      accept: '仅允许导入 xls、xlsx 格式文件。',
      download: '下载模板',
      rules: {
        username: '请输入用户名称',
        nickname: '请输入用户昵称',
        account: '请输入账号',
        password: '请输入用户密码',
        mobile: '请输入手机号码',
        email: '请输入邮箱',
        errMobile: '请输入正确的手机号码',
        errEmail: '请输入正确的邮箱地址',
        depart: '请选择归属部门',
        sex: '请选择用户性别',
        post: '请选择岗位',
        status: '请选择用户状态',
        role: '请选择角色',
        emptyPwd: '请输入新密码',
        errPwd: '密码格式错误',
        emptyFile: '请上传文件',
        createCount: '创建成功数量：',
        updateCount: '更新成功数量：',
        errorCount: '更新失败数量：',
        errorUpload: '上传失败，请您重新上传！',
        maxFileLen: '最多只能上传一个文件！'
      }
    },
    // 岗位
    post: {
      title: '岗位',
      manage: '岗位管理',
      name: '岗位名称',
      code: '岗位编码',
      rules: {
        name: '请输入岗位名称',
        code: '请输入岗位编码',
        status: '请选择岗位状态'
      }
    },
    // 租户
    tenant: {
      title: '租户',
      manage: '租户管理',
      name: '租户名称',
      contactName: '联系人',
      contactMobile: '联系手机',
      domain: '绑定域名',
      packageId: '租户套餐',
      username: '用户名称',
      password: '用户密码',
      expireTime: '过期时间',
      admin: '系统租户',
      rules: {
        name: '请输入租户名称',
        title: '请选择租户',
        contactName: '请输入联系人',
        contactMobile: '请输入联系手机',
        domain: '请输入绑定域名',
        packageId: '请选择租户套餐',
        username: '请输入用户名称',
        password: '请输入用户密码',
        expireTime: '请选择过期时间',
        status: '请选择租户状态'
      },
      // 租户套餐
      package: {
        title: '套餐',
        manage: '套餐管理',
        name: '套餐名称',
        type: '套餐类型',
        accountCount: '账号额度',
        menuIds: '权限菜单',
        rules: {
          name: '请输入套餐名称',
          type: '请选择套餐类型',
          accountCount: '请输入账号额度',
          menuIds: '请选择权限菜单',
          status: '请选择套餐状态'
        }
      }
    },
    // 日志
    log: {
      id: '日志编号',
      // 操作日志
      operate: {
        title: '操作日志',
        nickname: '操作人名字',
        userId: '操作人编号',
        module: '操作模块',
        type: '操作类型',
        content: '操作内容',
        extra: '操作拓展参数',
        createTime: '操作时间',
        bizId: '业务编号',
        traceId: '链路追踪',
        userIp: '操作人 IP',
        agent: '操作人 UA',
        requestUrl: '请求 URL',
        requestMethod: '请求方法',
        detail: '操作日志详情',
        rules: {
          nickname: '请选择操作人员',
          module: '请输入操作模块',
          type: '请输入操作类型'
        }
      },
      // 登录日志
      sign: {
        title: '登录日志',
        type: '操作类型',
        username: '用户名称',
        userIp: '登录地址',
        agent: '浏览器',
        result: '登录结果',
        createTime: '登录日期',
        detail: '登录日志详情',
        rules: {
          username: '请输入用户名称',
          userIp: '请输入登录地址'
        }
      }
    },
    // 公告
    notice: {
      title: '公告',
      manage: '通知公告',
      name: '公告标题',
      type: '公告类型',
      confirm: '是否推送所选中的通知？',
      success: '推送成功！',
      content: '公告内容',
      rules: {
        name: '请输入公告标题',
        type: '请选择公告类型',
        content: '请输入公告内容',
        status: '请选择公告状态'
      }
    },
    // 地区管理
    area: {
      name: '地名',
      search: 'IP 查询',
      ip: 'IP',
      result: '地址',
      success: '查询成功！',
      rules: {
        ip: '请输入 IP 地址',
        result: '展示查询 IP 结果'
      }
    },
    // 单点登录 oauth2
    oauth2: {
      // 客户端管理
      client: {
        title: '客户端',
        manage: '应用管理',
        name: '应用名',
        logo: '应用图标',
        description: '应用描述',
        clientId: '客户端编号',
        secret: '客户端密钥',
        accessTokenValiditySeconds: '访问令牌的有效期',
        refreshTokenValiditySeconds: '刷新令牌的有效期',
        authorizedGrantTypes: '授权类型',
        scopes: '授权范围',
        autoApproveScopes: '自动授权范围',
        redirectUris: '可重定向的 URI 地址',
        authorities: '权限',
        resourceIds: '资源',
        additionalInformation: '附加信息',
        second: '{0} 秒',
        rules: {
          name: '请输入应用名',
          logo: '请上传应用图标',
          description: '请输入应用描述',
          clientId: '请输入客户端编号',
          secret: '请输入客户端密钥',
          authorizedGrantTypes: '请选择授权类型',
          scopes: '请选择授权范围',
          autoApproveScopes: '请选择自动授权范围',
          redirectUris: '请选择可重定向的 URI 地址',
          authorities: '请选择权限',
          resourceIds: '请选择资源',
          additionalInformation: '请输入附加信息，JSON 格式数据',
          token: '单位：秒',
          status: '请选择应用状态'
        }
      },
      // token 管理
      token: {
        title: '令牌',
        manage: '令牌管理',
        accessToken: '访问令牌',
        refreshToken: '刷新令牌',
        userId: '用户编号',
        userType: '用户类型',
        expiresTime: '过期时间',
        clientId: '客户端编号',
        quit: '强退',
        confirm: '是否要强制退出用户',
        rules: {
          userId: '请输入用户编号',
          userType: '请选择用户类型',
          clientId: '请输入客户端编号'
        }
      }
    },
    // 三方登录
    social: {
      title: '三方登录',
      client: {
        title: '三方应用',
        manage: '三方应用',
        name: '应用名',
        socialType: '社交平台',
        userType: '用户类型',
        clientId: '客户端编号',
        clientSecret: '客户端密钥',
        agentId: 'agentId',
        rules: {
          name: '请输入应用名',
          status: '请选择应用状态',
          clientId: '请输入客户端编号',
          clientSecret: '请输入客户端密钥',
          socialType: '请选择社交平台',
          agentId: '请输入授权方应用 ID',
          userType: '请选择用户类型'
        },
        tip: {
          clientId: '请输入客户端编号，对应各平台的 appKey',
          clientSecret: '请输入客户端密钥，对应各平台的 appSecret',
          agentId: '授权方的网页应用 ID，有则填'
        }
      },
      user: {
        title: '三方用户',
        manage: '三方用户',
        type: '社交平台',
        avatar: '用户头像',
        openid: '社交 openid',
        nickname: '用户昵称',
        token: '社交 token',
        rawTokenInfo: '原始 Token 数据',
        rawUserInfo: '原始 User 数据',
        code: '最后一次的认证 code',
        state: '最后一次的认证 state',
        detail: '详情',
        rules: {
          nickname: '请输入用户昵称',
          openid: '请输入社交 openid',
          type: '请选择社交平台'
        }
      }
    },
    // 消息中心
    messages: {
      // 邮箱管理
      mail: {
        // 邮箱账号管理
        account: {
          title: '邮箱',
          manage: '邮箱管理',
          mail: '邮箱',
          username: '用户名',
          password: '密码',
          host: 'SMTP 服务器域名',
          port: 'SMTP 服务器端口',
          sslEnable: '是否开启SSL',
          detail: '详情',
          rules: {
            mail: '请输入邮箱',
            username: '请输入用户名',
            password: '请输入密码',
            host: '请输入 SMTP 服务器域名',
            port: '请输入 SMTP 服务器端口'
          }
        },
        // 邮箱日志管理
        log: {
          title: '邮件记录',
          manage: '邮件记录',
          id: '编号',
          userId: '用户编号',
          userType: '用户类型',
          toMail: '接收邮箱',
          accountId: '邮箱账号',
          fromMail: '邮箱账号',
          templateId: '模板编号',
          templateCode: '模板编码',
          templateNickname: '发送人名称',
          templateTitle: '邮件标题',
          templateContent: '邮件内容',
          templateParams: '邮箱参数',
          sendStatus: '发送状态',
          sendTime: '发送时间',
          sendMessageId: '发送返回的消息编号',
          sendException: '发送异常',
          detail: '详情',
          rules: {
            toMail: '请输入接收邮箱',
            accountId: '请选择邮箱账号',
            sendStatus: '请选择发送状态',
            templateId: '请输入模板编号',
            userId: '请输入用户编号',
            userType: '请选择用户类型'
          }
        },
        // 邮箱日志管理
        template: {
          title: '邮件模板',
          manage: '邮件模板',
          mail: '收件邮箱',
          name: '模板名称',
          code: '模板编号',
          accountId: '邮箱账号',
          nickname: '发送人名称',
          templateTitle: '模板标题',
          content: '模板内容',
          params: '模板参数',
          status: '模板状态',
          templateId: '模板编号',
          templateCode: '模板编码',
          detail: '详情',
          send: '邮件发送',
          param: "参数 {'{'}{0}{'}'}",
          sendDone: '提交发送成功！发送结果，见发送日志编号：{0}',
          rules: {
            mail: '请输入收件邮箱',
            name: '请输入模板名称',
            code: '请输入模板编码',
            accountId: '请选择邮箱账号',
            nickname: '请输入发送人名称',
            templateTitle: '请输入模板标题',
            content: '请输入模板内容',
            params: '模板参数',
            status: '请选择模板状态',
            templateId: '模板编号',
            param: '请输入 {0} 参数',
            paramEmpty: '参数 {0} 不能为空',
            templateCode: '模板编码'
          }
        }
      },
      // 站内信管理
      notify: {
        // 站内信记录
        record: {
          title: '消息记录',
          manage: '消息记录',
          userId: '用户编号',
          userType: '用户类型',
          templateCode: '模板编码',
          templateType: '模板类型',
          templateNickname: '发送人名称',
          templateContent: '模板内容',
          templateParams: '模板参数',
          readStatus: '是否已读',
          readTime: '阅读时间',
          detail: '详情',
          rules: {
            userId: '请输入用户编号',
            userType: '请选择用户类型',
            templateCode: '请输入模板编码',
            templateType: '请选择模板类型'
          }
        },
        // 我的站内信
        my: {
          title: '我的站内信',
          manage: '我的站内信',
          readStatus: '是否已读',
          sendTime: '发送时间',
          readTime: '阅读时间',
          toRead: '标记已读',
          allRead: '全部已读',
          templateNickname: '发送人',
          templateType: '消息类型',
          templateContent: '消息内容',
          detail: '详情',
          read: '已读',
          allReadSuccess: '全部已读成功！',
          multiplyReadSuccess: '批量已读成功！',
          seeMore: '查看全部',
          rules: {
            readStatus: '请选择是否已读'
          }
        },
        // 站内信模板管理
        template: {
          title: '模板',
          manage: '模板管理',
          userId: '接收人ID',
          user: '接收人',
          userType: '用户类型',
          name: '模板名称',
          code: '模板编码',
          type: '模板类型',
          content: '模板内容',
          nickname: '发件人名称',
          detail: '详情',
          send: '发送',
          param: "参数 {'{'}{0}{'}'}",
          sendDone: '提交发送成功！发送结果，见发送日志编号：{0}',
          rules: {
            name: '请输入模板名称',
            code: '请输入模板编码',
            type: '请选择模板类型',
            status: '请选择模板状态',
            content: '请输入模板内容',
            nickname: '请输入发件人名称',
            param: '请输入 {0} 参数',
            paramEmpty: '参数 {0} 不能为空',
            userId: '接收人不能为空',
            user: '请选择接收人'
          }
        }
      },
      // 短信管理
      sms: {
        // 短信渠道管理
        channel: {
          title: '短信渠道',
          manage: '短信渠道',
          signature: '短信签名',
          code: '渠道编码',
          remark: '备注',
          apiKey: '短信 API 账号',
          apiSecret: '短信 API 密钥',
          callbackUrl: '短信发送回调 URL',
          rules: {
            signature: '请输入短信签名',
            status: '请选择渠道状态',
            code: '请输入渠道编码',
            apiKey: '请输短信 API 账号',
            apiSecret: '请输入短信 API 密钥',
            callbackUrl: '请输入短信发送回调 URL'
          }
        },
        // 短信日志管理
        log: {
          title: '短信日志',
          manage: '短信日志',
          apiTemplateId: '短信 API 模板编号',
          channel: '短信渠道',
          channelId: '短信渠道编号',
          channelCode: '短信渠道编码',
          mobile: '手机号',
          template: '短信模板',
          templateId: '模板编号',
          templateCode: '模板编码',
          templateType: '短信类型',
          templateContent: '短信内容',
          templateParams: '短信参数',
          userInfo: '用户信息',
          userId: '用户编号',
          userType: '用户类型',
          sendStatus: '发送状态',
          sendTime: '发送时间',
          apiSendCode: '短信 API 发送状态码',
          apiSendMsg: '短信 API 发送状态信息',
          apiRequestId: '短信 API 请求编号',
          apiSerialNo: '短信 API 编号',
          sendResult: '短信 API 发送结果',
          receiveStatus: '接收状态',
          receiveTime: '接收时间',
          apiReceiveCode: '短信 API 接收状态码',
          apiReceiveMsg: '短信 API 接收状态信息',
          receiveResult: '短信 API 接收结果',
          detail: '详情',
          rules: {
            type: '请选择短信类型',
            templateId: '请输入模板编号',
            sendStatus: '请选择发送状态',
            receiveStatus: '请选择接收状态',
            name: '请输入模板名称',
            content: '请输入模板内容',
            apiTemplateId: '请输入短信 API 模板编号',
            channel: '请选择短信渠道',
            channelId: '请输入短信渠道编号',
            channelCode: '请输入短信渠道编码',
            mobile: '请输入手机号'
          }
        },
        // 短信模板管理
        template: {
          title: '短信模板',
          manage: '短信模板',
          type: '短信类型',
          code: '模板编码',
          name: '模板名称',
          content: '模板内容',
          apiTemplateId: '短信 API 模板编号',
          channel: '短信渠道',
          channelId: '短信渠道编号',
          channelCode: '短信渠道编码',
          mobile: '手机号',
          params: '模板参数',
          detail: '详情',
          send: '短信发送',
          param: "参数 {'{'}{0}{'}'}",
          sendDone: '提交发送成功！发送结果，见发送日志编号：{0}',
          rules: {
            type: '请选择短信类型',
            code: '请输入模板编码',
            name: '请输入模板名称',
            content: '请输入模板内容',
            apiTemplateId: '请输入短信 API 模板编号',
            channel: '请选择短信渠道',
            channelId: '请输入短信渠道编号',
            channelCode: '请输入短信渠道编码',
            mobile: '请输入手机号',
            param: '请输入 {0} 参数',
            paramEmpty: '参数 {0} 不能为空'
          }
        }
      }
    },
    // 敏感词管理
    sensitiveWord: {
      title: '敏感词',
      manage: '敏感词管理',
      name: '敏感词',
      tags: '标签',
      tag: '标签',
      check: '检测',
      text: '文本',
      rules: {
        name: '请输入敏感词',
        text: '请输入文本',
        tags: '请选择标签',
        tag: '请选择标签',
        noSensitive: '不包含敏感词！',
        hasSensitive: '包含敏感词：{0}'
      }
    },
    // 错误码管理
    errorCode: {
      title: '错误码',
      manage: '错误码管理',
      applicationName: '应用名',
      code: '错误码',
      message: '提示信息',
      rules: {
        applicationName: '请输入应用名',
        code: '请输入错误码',
        message: '请输入提示信息'
      }
    }
  },
  // 开发模块
  develop: {
    websocket: {
      title: 'websocket 测试',
      connect: '连接',
      status: '连接状态：',
      open: '开启连接',
      close: '关闭连接',
      address: '服务地址',
      input: {
        title: '消息输入框',
        message: '请输入你要发送的消息',
        userId: '请选择发送人',
        send: '发送',
        all: '所有人'
      },
      record: {
        title: '消息记录',
        message: '收到消息：'
      },
      error: {
        type: '未知类型的消息：',
        untreated: '未处理的消息：',
        exception: '处理消息发生异常：'
      }
    }
  }
}
